<!DOCTYPE HTML>
<html lang="en" >
    
    <head>
        
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <title>编译原理 | 课程介绍</title>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <meta name="description" content="">
        <meta name="generator" content="GitBook 2.6.7">
        
        
        <meta name="HandheldFriendly" content="true"/>
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
        <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
        
    <link rel="stylesheet" href="../gitbook/style.css">
    
        
        <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
        
    
        
        <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-search/search.css">
        
    
        
        <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-fontsettings/website.css">
        
    
    

        
    
    
    <link rel="next" href="../chapter8/8.2_makefile.html" />
    
    
    <link rel="prev" href="../chapter8/index.html" />
    

        
    </head>
    <body>
        
        
    <div class="book"
        data-level="8.1"
        data-chapter-title="编译原理"
        data-filepath="chapter8/8.1_编译原理.md"
        data-basepath=".."
        data-revision="Wed Oct 31 2018 20:17:52 GMT+0800 (CST)"
        data-innerlanguage="">
    

<div class="book-summary">
    <nav role="navigation">
        <ul class="summary">
            
            
            
                
                <li>
                    <a href="http://www.0voice.com" target="blank" class="custom-link">ntyTcp</a>
                </li>
            
            

            
            <li class="divider"></li>
            

            
    
        <li class="chapter " data-level="0" data-path="index.html">
            
                
                    <a href="../index.html">
                
                        <i class="fa fa-check"></i>
                        
                        Introduction
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="1" data-path="chapter1/index.html">
            
                
                    <a href="../chapter1/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>1.</b>
                        
                        课程介绍和项目介绍
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.1" data-path="chapter1/1.1_课程介绍.html">
            
                
                    <a href="../chapter1/1.1_课程介绍.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>1.1.</b>
                        
                        课程介绍
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="chapter1/1.2_项目介绍.html">
            
                
                    <a href="../chapter1/1.2_项目介绍.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>1.2.</b>
                        
                        项目介绍
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="2" data-path="chapter2/index.html">
            
                
                    <a href="../chapter2/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>2.</b>
                        
                        搭建开发环境
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="2.1" data-path="chapter2/2.1_安装和配置linux系统.html">
            
                
                    <a href="../chapter2/2.1_安装和配置linux系统.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>2.1.</b>
                        
                        安装和配置linux系统
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="2.2" data-path="chapter2/2.2_linux命令.html">
            
                
                    <a href="../chapter2/2.2_linux命令.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>2.2.</b>
                        
                        linux命令
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="2.3" data-path="chapter2/2.3_安装开发工具.html">
            
                
                    <a href="../chapter2/2.3_安装开发工具.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>2.3.</b>
                        
                        安装开发工具
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="2.4" data-path="chapter2/2.4_搭建开发环境.html">
            
                
                    <a href="../chapter2/2.4_搭建开发环境.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>2.4.</b>
                        
                        搭建开发环境
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3" data-path="chapter3/index.html">
            
                
                    <a href="../chapter3/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>3.</b>
                        
                        项目文档
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.1" data-path="chapter3/3.1_如何管理需求.html">
            
                
                    <a href="../chapter3/3.1_如何管理需求.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>3.1.</b>
                        
                        如何管理需求
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="3.2" data-path="chapter3/3.1_如何架构设计.html">
            
                
                    <a href="../chapter3/3.1_如何架构设计.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>3.2.</b>
                        
                        如何架构设计
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="3.3" data-path="chapter3/3.3_共享单车架构设计.html">
            
                
                    <a href="../chapter3/3.3_共享单车架构设计.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>3.3.</b>
                        
                        共享单车的架构
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="4" data-path="chapter4/index.html">
            
                
                    <a href="../chapter4/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>4.</b>
                        
                        敏捷开发
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="4.1" data-path="chapter4/4.1_敏捷概述.html">
            
                
                    <a href="../chapter4/4.1_敏捷概述.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>4.1.</b>
                        
                        敏捷概述
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="4.2" data-path="chapter4/4.2_SCRUM介绍.html">
            
                
                    <a href="../chapter4/4.2_SCRUM介绍.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>4.2.</b>
                        
                        SCRUM介绍
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="4.3" data-path="chapter4/4.3_我们应该认识到.html">
            
                
                    <a href="../chapter4/4.3_我们应该认识到.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>4.3.</b>
                        
                        我们应该认识到
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="5" data-path="chapter5/index.html">
            
                
                    <a href="../chapter5/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>5.</b>
                        
                        持续集成
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="5.1" data-path="chapter5/5.1_lua语言介绍.html">
            
                
                    <a href="../chapter5/5.1_lua语言介绍.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>5.1.</b>
                        
                        lua语言介绍
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="5.2" data-path="chapter5/5.2_gtest单元测试.html">
            
                
                    <a href="../chapter5/5.2_gtest单元测试.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>5.2.</b>
                        
                        gtest单元测试
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="5.3" data-path="chapter5/5.3_搭建持续集成环境.html">
            
                
                    <a href="../chapter5/5.3_搭建持续集成环境.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>5.3.</b>
                        
                        搭建持续集成环境
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="6" data-path="chapter6/index.html">
            
                
                    <a href="../chapter6/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>6.</b>
                        
                        产品版本管理之git
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="7" data-path="chapter7/index.html">
            
                
                    <a href="../chapter7/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>7.</b>
                        
                        shell脚本
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="7.1" data-path="chapter7/7.1_什么是shell.html">
            
                
                    <a href="../chapter7/7.1_什么是shell.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>7.1.</b>
                        
                        什么是shell
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="7.2" data-path="chapter7/7.2_Shell编程.html">
            
                
                    <a href="../chapter7/7.2_Shell编程.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>7.2.</b>
                        
                        Shell编程
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="7.3" data-path="chapter7/7.3_启动脚本实例.html">
            
                
                    <a href="../chapter7/7.3_启动脚本实例.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>7.3.</b>
                        
                        启动脚本实例
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="8" data-path="chapter8/index.html">
            
                
                    <a href="../chapter8/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>8.</b>
                        
                        项目编译
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter active" data-level="8.1" data-path="chapter8/8.1_编译原理.html">
            
                
                    <a href="../chapter8/8.1_编译原理.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>8.1.</b>
                        
                        编译原理
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="8.2" data-path="chapter8/8.2_makefile.html">
            
                
                    <a href="../chapter8/8.2_makefile.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>8.2.</b>
                        
                        makefile
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="8.3" data-path="chapter8/8.3_cmake.html">
            
                
                    <a href="../chapter8/8.3_cmake.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>8.3.</b>
                        
                        cmake
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="8.4" data-path="chapter8/8.4_GNU_make.html">
            
                
                    <a href="../chapter8/8.4_GNU_make.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>8.4.</b>
                        
                        GNU make
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="9" data-path="chapter9/index.html">
            
                
                    <a href="../chapter9/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>9.</b>
                        
                        调试技巧
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="9.1" data-path="chapter9/9.1_gdb调试.html">
            
                
                    <a href="../chapter9/9.1_gdb调试.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>9.1.</b>
                        
                        gdb调试
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="9.2" data-path="chapter9/9.2_coredump.html">
            
                
                    <a href="../chapter9/9.2_coredump.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>9.2.</b>
                        
                        coredump
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="9.3" data-path="chapter9/9.3_内存泄漏检查.html">
            
                
                    <a href="../chapter9/9.3_内存泄漏检查.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>9.3.</b>
                        
                        内存泄漏检查
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="10" data-path="chapter10/index.html">
            
                
                    <a href="../chapter10/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>10.</b>
                        
                        项目配置文件
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.1" data-path="chapter10/10.1_ini配置.html">
            
                
                    <a href="../chapter10/10.1_ini配置.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>10.1.</b>
                        
                        ini配置
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="10.2" data-path="chapter10/10.2_xml配置.html">
            
                
                    <a href="../chapter10/10.2_xml配置.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>10.2.</b>
                        
                        xml配置
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="10.3" data-path="chapter10/10.3_lua配置.html">
            
                
                    <a href="../chapter10/10.3_lua配置.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>10.3.</b>
                        
                        lua配置
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="11" data-path="chapter11/index.html">
            
                
                    <a href="../chapter11/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>11.</b>
                        
                        项目日志
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="11.1" data-path="chapter11/11.1_重定向.html">
            
                
                    <a href="../chapter11/11.1_重定向.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>11.1.</b>
                        
                        重定向
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="11.2" data-path="chapter11/11.2_log4cpp.html">
            
                
                    <a href="../chapter11/11.2_log4cpp.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>11.2.</b>
                        
                        log4cpp
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="11.3" data-path="chapter11/11.3_大型项目的日志架构.html">
            
                
                    <a href="../chapter11/11.3_大型项目的日志架构.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>11.3.</b>
                        
                        分布式系统的集中式日志解决方案
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="12" data-path="chapter12/index.html">
            
            <span><b>12.</b> 进程</span>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="12.1" data-path="chapter12/12.1_进程的概念.html">
            
                
                    <a href="../chapter12/12.1_进程的概念.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>12.1.</b>
                        
                        进程的概念
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="12.2" data-path="chapter12/12.2_如何产生一个进程.html">
            
                
                    <a href="../chapter12/12.2_如何产生一个进程.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>12.2.</b>
                        
                        如何产生一个进程
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="12.3" data-path="chapter12/12.3_僵尸孤儿守护进程.html">
            
                
                    <a href="../chapter12/12.3_僵尸孤儿守护进程.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>12.3.</b>
                        
                        僵尸、孤儿和守护进程
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="13" data-path="chapter13/index.html">
            
            <span><b>13.</b> 进程间通信</span>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="13.1" data-path="chapter13/13.1_管道与命名管道.html">
            
            <span><b>13.1.</b> 管道与命名管道</span>
            
            
        </li>
    
        <li class="chapter " data-level="13.2" data-path="chapter13/13.2_共享内存.html">
            
            <span><b>13.2.</b> 共享内存</span>
            
            
        </li>
    
        <li class="chapter " data-level="13.3" data-path="chapter13/13.3_信号量.html">
            
            <span><b>13.3.</b> 信号量</span>
            
            
        </li>
    
        <li class="chapter " data-level="13.4" data-path="chapter13/13.4_信号.html">
            
            <span><b>13.4.</b> 信号</span>
            
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="14" data-path="chapter14/index.html">
            
                
                    <a href="../chapter14/index.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>14.</b>
                        
                        网络协议
                    </a>
            
            
            <ul class="articles">
                
    
        <li class="chapter " data-level="14.1" data-path="chapter14/14.1_俗话网络通信.html">
            
                
                    <a href="../chapter14/14.1_俗话网络通信.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>14.1.</b>
                        
                        俗话网络通信
                    </a>
            
            
        </li>
    
        <li class="chapter " data-level="14.2" data-path="chapter14/14.2_网络7层协议与4层协议.html">
            
                
                    <a href="../chapter14/14.2_网络7层协议与4层协议.html">
                
                        <i class="fa fa-check"></i>
                        
                            <b>14.2.</b>
                        
                        网络7层协议与4层协议
                    </a>
            
            
        </li>
    

            </ul>
            
        </li>
    


            
            <li class="divider"></li>
            <li>
                <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
                    Published with GitBook
                </a>
            </li>
            
        </ul>
    </nav>
</div>

    <div class="book-body">
        <div class="body-inner">
            <div class="book-header" role="navigation">
    <!-- Actions Left -->
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href="../" >课程介绍</a>
    </h1>
</div>

            <div class="page-wrapper" tabindex="-1" role="main">
                <div class="page-inner">
                
                
                    <section class="normal" id="section-">
                    
                        <h1 id="81-&#x7F16;&#x8BD1;&#x539F;&#x7406;">8.1 &#x7F16;&#x8BD1;&#x539F;&#x7406;</h1>
<ul>
<li><a href="#1">&#x524D;&#x8A00;</a></li>
<li><a href="#2">&#x9884;&#x5904;&#x7406;</a></li>
<li><a href="#3">&#x7F16;&#x8BD1;</a></li>
<li><a href="#4">&#x6C47;&#x7F16;</a></li>
<li><a href="#4">&#x94FE;&#x63A5;</a></li>
</ul>
<p>&#x2003;&#x2003;&#x6211;&#x4EEC;&#x7528;C&#x6216;&#x8005;C++&#x8BED;&#x8A00;&#x5199;&#x597D;&#x4E86;&#x6E90;&#x7A0B;&#x5E8F;&#xFF0C;&#x4F46;&#x662F;&#x8FD9;&#x4E2A;&#x4EE3;&#x7801;&#x53EA;&#x80FD;&#x8BA9;&#x4EBA;&#x8BFB;&#x61C2;&#xFF0C;&#x5374;&#x4E0D;&#x80FD;&#x88AB;&#x673A;&#x5668;&#x8BFB;&#x61C2;&#xFF0C;&#x4E3A;&#x4E86;&#x5728;&#x7CFB;&#x7EDF;&#x4E0A;&#x8FD0;&#x884C;&#x8FD9;&#x4E2A;&#x7A0B;&#x5E8F;&#xFF0C;&#x8BE5;&#x6E90;&#x7A0B;&#x5E8F;&#x9700;&#x8981;&#x88AB;&#x8F6C;&#x5316;&#x4E3A;&#x4E00;&#x7CFB;&#x5217;&#x4F4E;&#x7EA7;&#x673A;&#x5668;&#x8BED;&#x8A00;&#x6307;&#x4EE4;&#xFF0C;&#x7136;&#x540E;&#x5C06;&#x8FD9;&#x4E9B;&#x6307;&#x4EE4;&#x6309;&#x7167;&#x53EF;&#x6267;&#x884C;&#x76EE;&#x6807;&#x7A0B;&#x5E8F;&#x7684;&#x683C;&#x5F0F;&#x6253;&#x5305;&#x5E76;&#x4EE5;&#x4E8C;&#x8FDB;&#x5236;&#x78C1;&#x76D8;&#x6587;&#x4EF6;&#x5F62;&#x5F0F;&#x5B58;&#x50A8;&#x8D77;&#x6765;&#x3002;&#x6700;&#x7EC8;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#xFF0C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x52A0;&#x8F7D;&#x8FD9;&#x4E2A;&#x4E8C;&#x8FDB;&#x5236;&#x6587;&#x4EF6;&#xFF0C;&#x4EE5;&#x8FDB;&#x7A0B;&#x7684;&#x65B9;&#x5F0F;&#x8FD0;&#x884C;&#x8BE5;&#x7A0B;&#x5E8F;&#x3002;<br>&#x5728;linux&#x7CFB;&#x7EDF;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x4E0B;&#x9762;&#x8FD9;&#x4E2A;&#x65B9;&#x5F0F;&#xFF0C;&#x628A;&#x6E90;&#x7A0B;&#x5E8F;&#x8F6C;&#x5316;&#x4E3A;&#x76EE;&#x6807;&#x7A0B;&#x5E8F;&#x3002;&#xFF1A;  </p>
<pre><code>gcc tcp_server.c -o tcp_server
</code></pre><p>&#x5728;&#x8FD9;&#x91CC;&#xFF0C;gcc&#x8FD9;&#x4E2A;&#x7F16;&#x8BD1;&#x5DE5;&#x5177;&#x5E2E;&#x6211;&#x4EEC;&#x628A;&#x6E90;&#x7801;&#x6587;&#x4EF6;&#x8F6C;&#x6362;&#x6210;&#x4E86;&#x76EE;&#x6807;&#x53EF;&#x6267;&#x884C;&#x7A0B;&#x5E8F;&#xFF08;tcp_server&#xFF09;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x6574;&#x4E2A;&#x8F6C;&#x6362;&#x8FC7;&#x7A0B;&#x5305;&#x62EC;&#x4E86;&#x9884;&#x5904;&#x7406;&#x3001;&#x7F16;&#x8BD1;&#x3001;&#x6C47;&#x7F16;&#x548C;&#x94FE;&#x63A5;&#x3002;&#x90A3;&#x4E48;gcc&#x8FD9;&#x4E2A;&#x5DE5;&#x5177;&#x5B9E;&#x9645;&#x4E0A;&#x5206;&#x522B;&#x4F7F;&#x7528;&#x9884;&#x5904;&#x7406;&#x5668;&#x3001;&#x7F16;&#x8BD1;&#x5668;&#x3001;&#x6C47;&#x7F16;&#x5668;&#x3001;&#x94FE;&#x63A5;&#x5668;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#x8FD9;&#x56DB;&#x4E2A;&#x7A0B;&#x5E8F;&#x6784;&#x6210;&#x4E86;&#x7F16;&#x8BD1;&#x7CFB;&#x7EDF;&#x3002;&#x8FC7;&#x7A0B;&#x5982;&#x4E0B;&#x56FE;&#xFF1A;<br><img src="8_1.png" alt="&#x7F16;&#x8BD1;&#x8FC7;&#x7A0B;">
&#x8FD0;&#x884C;&#x4EE5;&#x4E0B;&#x547D;&#x4EE4;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x67E5;&#x770B;&#x5230;&#x8FD9;&#x56DB;&#x4E2A;&#x9636;&#x6BB5;&#x7684;&#x5904;&#x7406;&#x5BF9;&#x5E94;&#x7684;&#x547D;&#x4EE4;&#xFF1A;  </p>
<pre><code>$gcc --h
-E                       Preprocess only; do not compile, assemble or link
-S                       Compile only; do not assemble or link
-c                       Compile and assemble, but do not link
-o &lt;file&gt;                  Place the output into &lt;file&gt;
</code></pre><p>&#x6BD4;&#x5982;&#x6211;&#x4EEC;&#x6709;&#x4E00;&#x4E2A;&#x7A0B;&#x5E8F;tcp_server.c&#xFF0C;&#x6E90;&#x7801;&#x4E3A;&#x89C1;<a href="https://github.com/zhiyong0804/socket/blob/master/tcp_server.c" target="_blank">https://github.com/zhiyong0804/socket/blob/master/tcp_server.c</a>  </p>
<h2 id="2">&#x9884;&#x5904;&#x7406;</h2>  
&#x2003;&#x2003;&#x9884;&#x5904;&#x7406;&#x4F1A;&#x5C06;&#x5934;&#x6587;&#x4EF6;&#x5305;&#x542B;&#x8FDB;&#x6765;&#xFF0C;&#x5E76;&#x4E14;&#x5C06;&#x5B8F;&#x5B9A;&#x4E49;&#x66FF;&#x6362;&#x8C03;&#x7528;&#xFF0C;&#x6211;&#x4EEC;&#x6765;&#x770B;&#x4E00;&#x4E0B;&#x8FD9;&#x4E2A;&#x9884;&#x5904;&#x7406;&#x8FC7;&#x7A0B;&#xFF0C;`gcc -E tcp_server.c -o tcp_server.i`&#x3002;  

&#x2003;&#x2003;&#x67E5;&#x770B;&#x8FD9;&#x4E2A;tcp_server.i&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x6587;&#x4EF6;&#x53D8;&#x5F97;&#x5F88;&#x5927;&#x4E86;&#xFF0C;tcp_server.c&#x91CC;include&#x7684;&#x5934;&#x6587;&#x4EF6;&#x91CC;&#x7684;&#x5185;&#x5BB9;&#x90FD;&#x6DFB;&#x52A0;&#x5230;&#x8FD9;&#x91CC;&#x4E86;&#xFF0C;&#x540C;&#x65F6;&#x5B8F;&#x5B9A;&#x4E49;&#x4E5F;&#x5C55;&#x5F00;&#x4E86;&#x3002;&#x5982;&#x4E0B;&#x56FE;&#xFF1A;  
![8_2.png]  
&#x2003;&#x2003;&#x540C;&#x65F6;&#xFF0C;&#x5176;&#x5B9E;&#x8FD9;&#x4E2A;tcp_server.i&#x8FD8;&#x662F;&#x4E00;&#x4E2A;c&#x8BED;&#x8A00;&#x6E90;&#x7A0B;&#x5E8F;&#xFF0C;&#x53EA;&#x4E0D;&#x8FC7;&#x4E0D;&#x90A3;&#x4E48;&#x597D;&#x770B;&#x4E86;&#x800C;&#x5DF2;&#x3002;
<h2 id="3">&#x7F16;&#x8BD1;</h2>    

<p>&#x2003;&#x2003;&#x7F16;&#x8BD1;&#x5668;(CCL)&#x5C06;&#x7ECF;&#x8FC7;&#x9884;&#x5904;&#x7406;&#x5668;&#x5904;&#x7406;&#x5F97;&#x5230;&#x7684;&#x6587;&#x672C;&#x6587;&#x4EF6;tcp_server.i&#x7FFB;&#x8BD1;&#x6210;tcp_server.s&#xFF0C;&#x5176;&#x4E2D;&#x5305;&#x542B;&#x4E86;&#x6C47;&#x7F16;&#x8BED;&#x8A00;&#x7A0B;&#x5E8F;&#xFF0C;&#x6C47;&#x7F16;&#x8BED;&#x8A00;&#x7A0B;&#x5E8F;&#x4EE5;&#x4E00;&#x79CD;&#x6807;&#x51C6;&#x7684;&#x6587;&#x672C;&#x683C;&#x5F0F;&#x786E;&#x5207;&#x63CF;&#x8FF0;&#x4E00;&#x6761;&#x4F4E;&#x7EA7;&#x673A;&#x5668;&#x8BED;&#x8A00;&#x6307;&#x4EE4;&#xFF0C;&#x90A3;&#x7F16;&#x8BD1;&#x5668;&#x4E3B;&#x8981;&#x5E72;&#x7684;&#x4E8B;&#x60C5;&#x5C31;&#x662F;&#xFF1A;&#x7ECF;&#x8FC7;&#x9884;&#x7F16;&#x8BD1;&#x5F97;&#x5230;&#x7684;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x4E2D;&#xFF0C;&#x5C06;&#x53EA;&#x6709;&#x5E38;&#x91CF;&#x3002;&#x5982;&#x6570;&#x5B57;&#x3001;&#x5B57;&#x7B26;&#x4E32;&#x3001;&#x53D8;&#x91CF;&#x7684;&#x5B9A;&#x4E49;&#xFF0C;&#x4EE5;&#x53CA;C&#x8BED;&#x8A00;&#x7684;&#x5173;&#x952E;&#x5B57;&#xFF0C;&#x5982;main,if,else,for,while,{,},+,-,*,\&#xFF0C;&#x7B49;&#x7B49;&#x3002;&#x7F16;&#x8BD1;&#x7A0B;&#x5E8F;&#x6240;&#x8981;&#x4F5C;&#x5F97;&#x5DE5;&#x4F5C;&#x5C31;&#x662F;&#x901A;&#x8FC7;&#x8BCD;&#x6CD5;&#x5206;&#x6790;&#x548C;&#x8BED;&#x6CD5;&#x5206;&#x6790;&#x7B49;&#x7B49;&#xFF0C;&#x5C06;&#x5176;&#x7FFB;&#x8BD1;&#x6210;&#x7B49;&#x4EF7;&#x7684;&#x4E2D;&#x95F4;&#x4EE3;&#x7801;&#x8868;&#x793A;&#x6216;&#x6C47;&#x7F16;&#x4EE3;&#x7801;&#x3002;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x4EE5;&#x4E0B;&#x6307;&#x4EE4;&#x751F;&#x6210;&#x4E00;&#x6761;&#x6C47;&#x7F16;&#x4EE3;&#x7801;<code>gcc -S tcp_server.i -o tcp_server.s</code>&#x3002;
<img src="8_3.png" alt="&#x6C47;&#x7F16;"></p>
<p>&#x2003;&#x2003;PS: &#x4E0D;&#x540C;&#x7684;&#x7F16;&#x8BD1;&#x5668;&#x53EF;&#x80FD;&#x4F1A;&#x6709;&#x4E0D;&#x540C;&#x7684;&#x8C03;&#x7528;&#x7EA6;&#x5B9A;&#xFF0C;&#x800C;&#x8C03;&#x7528;&#x7EA6;&#x5B9A;&#x4F1A;&#x5F71;&#x54CD;&#x6211;&#x4EEC;&#x6C47;&#x7F16;&#x7A0B;&#x5E8F;&#x7684;&#x64CD;&#x4F5C;:<br>  __cdecl&#x8C03;&#x7528;&#x7EA6;&#x5B9A;&#xFF1A;
    1&#xFF09;&#x53C2;&#x6570;&#x5165;&#x6808;&#x987A;&#x5E8F;&#x662F;&#x4ECE;&#x53F3;&#x5411;&#x5DE6;&#xFF1B;
    2&#xFF09;&#x5728;&#x88AB;&#x8C03;&#x7528;&#x51FD;&#x6570;&#x8FD4;&#x56DE;&#x540E;&#xFF0C;&#x7531;&#x8C03;&#x7528;&#x65B9;&#x8C03;&#x6574;&#x5806;&#x6808;&#x3002;
  __stdcall&#x8C03;&#x7528;&#x7EA6;&#x5B9A;&#xFF1A;
    1&#xFF09;&#x53C2;&#x6570;&#x4ECE;&#x53F3;&#x5411;&#x5DE6;&#x538B;&#x5165;&#x5806;&#x6808;&#xFF1B; 
    2&#xFF09;&#x51FD;&#x6570;&#x81EA;&#x8EAB;&#x6E05;&#x7406;&#x5806;&#x6808;&#xFF1B; 
    3&#xFF09;&#x51FD;&#x6570;&#x540D;&#x81EA;&#x52A8;&#x52A0;&#x524D;&#x5BFC;&#x7684;&#x4E0B;&#x5212;&#x7EBF;&#xFF0C;&#x540E;&#x9762;&#x7D27;&#x8DDF;&#x4E00;&#x4E2A;@&#x7B26;&#x53F7;&#xFF0C;&#x5176;&#x540E;&#x7D27;&#x8DDF;&#x7740;&#x53C2;&#x6570;&#x7684;&#x5C3A;&#x5BF8;&#xFF1B;
    4&#xFF09;&#x51FD;&#x6570;&#x53C2;&#x6570;&#x4E2A;&#x6570;&#x4E0D;&#x53EF;&#x53D8;&#x3002;
 __fastcall&#x8C03;&#x7528;&#x7EA6;&#x5B9A;&#xFF1A;
    1&#xFF09; &#x51FD;&#x6570;&#x7684;&#x7B2C;&#x4E00;&#x4E2A;&#x548C;&#x7B2C;&#x4E8C;&#x4E2A;&#x53C2;&#x6570;&#x901A;&#x8FC7;&#x5BC4;&#x5B58;&#x5668;&#x4F20;&#x9012;&#xFF0C;&#x5176;&#x4ED6;&#x53C2;&#x6570;&#x901A;&#x8FC7;&#x4ECE;&#x53F3;&#x5411;&#x5DE6;&#x7684;&#x987A;&#x5E8F;&#x538B;&#x6808;&#xFF1B;
    2&#xFF09;&#x88AB;&#x8C03;&#x7528;&#x8005;&#x6E05;&#x7406;&#x5806;&#x6808;&#xFF1B; 
    3&#xFF09;&#x51FD;&#x6570;&#x540D;&#x4FEE;&#x6539;&#x89C4;&#x5219;&#x540C;stdcall&#x3002;
  __thiscall&#x8C03;&#x7528;&#x7EA6;&#x5B9A;&#xFF1A;
    1&#xFF09; &#x53C2;&#x6570;&#x4ECE;&#x53F3;&#x5411;&#x5DE6;&#x5165;&#x6808;&#xFF1B;
    2&#xFF09; &#x5982;&#x679C;&#x53C2;&#x6570;&#x4E2A;&#x6570;&#x786E;&#x5B9A;&#xFF0C;this&#x6307;&#x9488;&#x901A;&#x8FC7;&#x5BC4;&#x5B58;&#x5668;&#x4F20;&#x9012;&#xFF1B;&#x5982;&#x679C;&#x53C2;&#x6570;&#x4E2A;&#x6570;&#x4E0D;&#x786E;&#x5B9A;&#xFF0C;this&#x6307;&#x9488;&#x6700;&#x540E;&#x88AB;&#x538B;&#x5165;&#x5806;&#x6808;&#xFF1B;<br>    3&#xFF09;&#x5BF9;&#x53C2;&#x6570;&#x4E2A;&#x6570;&#x4E0D;&#x5B9A;&#x7684;&#xFF0C;&#x8C03;&#x7528;&#x8005;&#x6E05;&#x7406;&#x5806;&#x6808;&#xFF0C;&#x5426;&#x5219;&#x51FD;&#x6570;&#x81EA;&#x5DF1;&#x6E05;&#x7406;&#x5806;&#x6808;&#x3002;</p>
<p>&#x2003;&#x2003;&#x53E6;&#x5916;&#x7F16;&#x8BD1;&#x65F6;&#x8FD8;&#x53EF;&#x4EE5;&#x505A;&#x4E00;&#x4E9B;&#x4F18;&#x5316;&#xFF0C;&#x4F18;&#x5316;&#x4E00;&#x79CD;&#x662F;&#x5BF9;&#x4E2D;&#x95F4;&#x4EE3;&#x7801;&#x7684;&#x4F18;&#x5316;&#x3002;&#x8FD9;&#x79CD;&#x4F18;&#x5316;&#x4E0D;&#x4F9D;&#x8D56;&#x4E8E;&#x5177;&#x4F53;&#x7684;&#x8BA1;&#x7B97;&#x673A;&#x3002;&#x53E6;&#x4E00;&#x79CD;&#x4F18;&#x5316;&#x5219;&#x4E3B;&#x8981;&#x9488;&#x5BF9;&#x76EE;&#x6807;&#x4EE3;&#x7801;&#x7684;&#x751F;&#x6210;&#x800C;&#x8FDB;&#x884C;&#x7684;&#x3002;<br>&#x2003;&#x2003;&#x5BF9;&#x4E8E;&#x524D;&#x4E00;&#x79CD;&#x4F18;&#x5316;&#xFF0C;&#x4E3B;&#x8981;&#x7684;&#x5DE5;&#x4F5C;&#x662F;&#x5220;&#x9664;&#x516C;&#x5171;&#x8868;&#x8FBE;&#x5F0F;&#x3001;&#x5FAA;&#x73AF;&#x4F18;&#x5316;&#xFF08;&#x4EE3;&#x7801;&#x5916;&#x63D0;&#x3001;&#x5F3A;&#x5EA6;&#x524A;&#x5F31;&#x3001;&#x53D8;&#x6362;&#x5FAA;&#x73AF;&#x63A7;&#x5236;&#x6761;&#x4EF6;&#x3001;&#x5DF2;&#x77E5;&#x91CF;&#x7684;&#x5408;&#x5E76;&#x7B49;&#xFF09;&#x3001;&#x590D;&#x5199;&#x4F20;&#x64AD;&#xFF0C;&#x4EE5;&#x53CA;&#x65E0;&#x7528;&#x8D4B;&#x503C;&#x7684;&#x5220;&#x9664;&#xFF0C;&#x7B49;&#x7B49;&#x3002;<br>&#x2003;&#x2003;&#x540E;&#x4E00;&#x79CD;&#x7C7B;&#x578B;&#x7684;&#x4F18;&#x5316;&#x540C;&#x673A;&#x5668;&#x7684;&#x786C;&#x4EF6;&#x7ED3;&#x6784;&#x5BC6;&#x5207;&#x76F8;&#x5173;&#xFF0C;&#x6700;&#x4E3B;&#x8981;&#x7684;&#x662F;&#x8003;&#x8651;&#x662F;&#x5982;&#x4F55;&#x5145;&#x5206;&#x5229;&#x7528;&#x673A;&#x5668;&#x7684;&#x5404;&#x4E2A;&#x786C;&#x4EF6;&#x5BC4;&#x5B58;&#x5668;&#x5B58;&#x653E;&#x7684;&#x6709;&#x5173;&#x53D8;&#x91CF;&#x7684;&#x503C;&#xFF0C;&#x4EE5;&#x51CF;&#x5C11;&#x5BF9;&#x4E8E;&#x5185;&#x5B58;&#x7684;&#x8BBF;&#x95EE;&#x6B21;&#x6570;&#x3002;<br>&#x2003;&#x2003;&#x6211;&#x4EEC;&#x5728;&#x4F7F;&#x7528;gcc/g++&#x7F16;&#x8BD1;&#x7A0B;&#x5E8F;&#x7684;&#x65F6;&#x5019;&#x4E5F;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;-O&#x9009;&#x9879;&#x6307;&#x5B9A;&#x4F18;&#x5316;&#x7B49;&#x7EA7;&#xFF1A;&#x4E3B;&#x8981;&#x6709;0,1,2,3&#x548C;s&#x7B49;5&#x79CD;&#x7EA7;&#x522B;&#x7684;&#x4F18;&#x5316;&#xFF0C;0&#x8868;&#x793A;&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x4F18;&#x5316;&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x4EEC;&#x4E0D;&#x63A8;&#x8350;&#x91C7;&#x7528;O3&#x548C;Os&#x7EA7;&#x522B;&#x7684;&#x4F18;&#x5316;&#xFF0C;&#x56E0;&#x4E3A;&#x53EF;&#x80FD;&#x4F1A;&#x5BFC;&#x81F4;&#x4E00;&#x4E9B;&#x4E0D;&#x53EF;&#x9884;&#x671F;&#x7684;&#x9519;&#x8BEF;&#x3002;</p>
<p></p><h2 id="3">&#x6C47;&#x7F16;</h2> 
&#x2003;&#x2003;&#x6C47;&#x7F16;&#x5668;(AS)&#x5C06;tcp_server.s&#x7FFB;&#x8BD1;&#x6210;&#x673A;&#x5668;&#x8BED;&#x8A00;&#x6307;&#x4EE4;&#xFF0C;&#x5E76;&#x6253;&#x5305;&#x6210;&#x53EF;&#x91CD;&#x5B9A;&#x4F4D;&#x76EE;&#x6807;&#x7A0B;&#x5E8F;&#xFF0C;&#x4E00;&#x822C;&#x4EE5;.o&#x4E3A;&#x6587;&#x4EF6;&#x6269;&#x5C55;&#x540D;&#x3002;&#x53EF;&#x91CD;&#x5B9A;&#x4F4D;&#x76EE;&#x6807;&#x7A0B;&#x5E8F;&#x662F;&#x4E8C;&#x8FDB;&#x5236;&#x6587;&#x4EF6;&#xFF0C;&#x5B83;&#x7684;&#x5B57;&#x8282;&#x7F16;&#x7801;&#x662F;&#x673A;&#x5668;&#x8BED;&#x8A00;&#x6307;&#x4EE4;&#x800C;&#x4E0D;&#x662F;&#x5B57;&#x7B26;&#x3002;<p></p>
<p>&#x2003;&#x2003;&#x8FD0;&#x884C;&#x4EE5;&#x4E0B;&#x6307;&#x4EE4;&#x53EF;&#x5F97;&#x5230;&#x91CD;&#x5B9A;&#x4F4D;&#x76EE;&#x6807;&#x7A0B;&#x5E8F;tcp_server.o&#xFF1A;  </p>
<pre><code>gcc -c tcp_server.s -o tcp_server.o
</code></pre><p>&#x2003;&#x2003;.o&#x548C;.a&#xFF0C;&#x90FD;&#x662F;&#x53EF;&#x91CD;&#x5B9A;&#x5411;&#x6587;&#x4EF6;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>file tcp_server.o</code>&#x6765;&#x67E5;&#x770B;&#x6587;&#x4EF6;&#x7C7B;&#x578B;&#xFF0C;&#x6BD4;&#x5982;&#xFF1A;
<code>tcp_server.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped</code>
&#x2003;&#x2003;.o&#x548C;.a&#x662F;&#x7B26;&#x5408;ELF&#x683C;&#x5F0F;&#x7684;&#xFF0C;&#x5BF9;&#x4E8E;ELF&#x683C;&#x5F0F;&#x5927;&#x5BB6;&#x53EF;&#x4EE5;&#x8BFE;&#x5916;&#x8111;&#x8865;&#x4E0B;&#xFF0C;&#x6211;&#x4EEC;&#x5148;&#x901A;&#x8FC7;objdump(objdump -h tcp_server.o)&#x6765;&#x67E5;&#x770B;&#x6587;&#x4EF6;&#x7ED3;&#x6784;&#xFF1A;</p>
<pre><code>tcp_server.o:     file format elf64-x86-64

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .text         000006be  0000000000000000  0000000000000000  00000040  2**0
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 .data         00000000  0000000000000000  0000000000000000  000006fe  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  0000000000000000  0000000000000000  000006fe  2**0
                  ALLOC
  3 .rodata       000001db  0000000000000000  0000000000000000  00000700  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .comment      00000035  0000000000000000  0000000000000000  000008db  2**0
                  CONTENTS, READONLY
  5 .note.GNU-stack 00000000  0000000000000000  0000000000000000  00000910  2**0
                  CONTENTS, READONLY
  6 .eh_frame     00000098  0000000000000000  0000000000000000  00000910  2**3
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
</code></pre><p>&#x2003;&#x2003;&#x5177;&#x4F53;&#x89E3;&#x91CA;&#x5927;&#x5BB6;&#x53EF;&#x4EE5;&#x53C2;&#x8003;&#x8FD9;&#x7BC7;&#x535A;&#x6587;&#xFF1A;<a href="https://blog.csdn.net/xuehuafeiwu123/article/details/72963229" target="_blank">https://blog.csdn.net/xuehuafeiwu123/article/details/72963229</a>&#x3002;&#x53E6;&#x5916;&#x6211;&#x4EEC;&#x4E5F;&#x53EF;&#x4EE5;&#x67E5;&#x770B;elf&#x91CC;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x6BD4;&#x5982;<code>objdump -s -d tcp_server.o</code>&#x3002;</p>
<pre><code>lizhiyong@ubuntu:~/socket$ objdump -s -d tcp_server.o

tcp_server.o:     file format elf64-x86-64

Contents of section .text:
 0000 554889e5 4883ec20 897dec48 8975e089  UH..H.. .}.H.u..
 0010 55e8c745 f4000000 008b45e8 8945f8eb  U..E......E..E..
 0020 58c745fc 00000000 8b45f848 63d08b45  X.E......E.Hc..E
 0030 f44863c8 488b45e0 4801c18b 45ec4889  .Hc.H.E.H...E.H.
 0040 ce89c7e8 00000000 8945fc83 7dfc007f  .........E..}...
 0050 1ce80000 00008b00 83f80b75 09c745fc  ...........u..E.
 0060 00000000 eb07b8ff ffffffeb 158b45fc  ..............E.
 0070 2945f88b 45fc0145 f4837df8 007fa28b  )E..E..E..}.....
 0080 45e8c9c3 554889e5 4883ec70 89f86689  E...UH..H..p..f.
 0090 459c6448 8b042528 00000048 8945f831  E.dH..%(...H.E.1
 00a0 c0ba0000 0000be01 000000bf 02000000  ................
 00b0 e8000000 008945a4 837da400 7914bf00  ......E..}..y...
 00c0 000000e8 00000000 b8ffffff ffe99600  ................
 00d0 0000c745 a8010000 00488d45 e0ba1000  ...E.....H.E....
 00e0 0000be00 00000048 89c7e800 00000066  .......H.......f
 00f0 c745e002 000fb745 9c89c7e8 00000000  .E.....E........
 0100 668945e2 c745e400 00000048 8d4de08b  f.E..E.....H.M..
 0110 45a4ba10 00000048 89ce89c7 e8000000  E......H........
 0120 0085c079 14bf0000 0000e800 000000bf  ...y............
 0130 01000000 e8000000 008b45a4 be800000  ..........E.....
 0140 0089c7e8 00000000 8945ac83 7dacff75  .........E..}..u
 0150 14bf0000 0000e800 000000bf 01000000  ................
 0160 e8000000 008b45a4 488b4df8 6448330c  ......E.H.M.dH3.
 0170 25280000 007405e8 00000000 c9c35548  %(...t........UH
 0180 89e54883 ec20897d ec8b45ec be030000  ..H.. .}..E.....
 0190 0089c7b8 00000000 e8000000 008945f8  ..............E.
 01a0 837df8ff 7514bf00 000000e8 00000000  .}..u...........
 01b0 bf010000 00e80000 0000814d f8000800  ...........M....
 01c0 008b55f8 8b45ecbe 04000000 89c7b800  ..U..E..........
 01d0 000000e8 00000000 8945fc83 7dfcff75  .........E..}..u
</code></pre><p>&#x2003;&#x2003;&#x770B;&#x4E0D;&#x61C2;&#x4EE5;&#x4E0A;&#x5185;&#x5BB9;&#x7684;&#x6CA1;&#x6709;&#x5173;&#x7CFB;&#xFF08;Lee&#x54E5;&#x4E5F;&#x770B;&#x4E0D;&#x61C2;&#x554A;&#xFF09;&#xFF0C;objdump&#x540C;&#x65F6;&#x4E5F;&#x53CD;&#x6C47;&#x7F16;&#x4E86;.text&#x6587;&#x4EF6;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre><code>Disassembly of section .text:

0000000000000000 &lt;nio_write&gt;:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   48 83 ec 20             sub    $0x20,%rsp
   8:   89 7d ec                mov    %edi,-0x14(%rbp)
   b:   48 89 75 e0             mov    %rsi,-0x20(%rbp)
   f:   89 55 e8                mov    %edx,-0x18(%rbp)
  12:   c7 45 f4 00 00 00 00    movl   $0x0,-0xc(%rbp)
  19:   8b 45 e8                mov    -0x18(%rbp),%eax
  1c:   89 45 f8                mov    %eax,-0x8(%rbp)
  1f:   eb 58                   jmp    79 &lt;nio_write+0x79&gt;
  21:   c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%rbp)
  28:   8b 45 f8                mov    -0x8(%rbp),%eax
  2b:   48 63 d0                movslq %eax,%rdx
  2e:   8b 45 f4                mov    -0xc(%rbp),%eax
  31:   48 63 c8                movslq %eax,%rcx
  34:   48 8b 45 e0             mov    -0x20(%rbp),%rax
  38:   48 01 c1                add    %rax,%rcx
  3b:   8b 45 ec                mov    -0x14(%rbp),%eax
  3e:   48 89 ce                mov    %rcx,%rsi
  41:   89 c7                   mov    %eax,%edi
  43:   e8 00 00 00 00          callq  48 &lt;nio_write+0x48&gt;
  48:   89 45 fc                mov    %eax,-0x4(%rbp)
  4b:   83 7d fc 00             cmpl   $0x0,-0x4(%rbp)
  4f:   7f 1c                   jg     6d &lt;nio_write+0x6d&gt;
  51:   e8 00 00 00 00          callq  56 &lt;nio_write+0x56&gt;
  56:   8b 00                   mov    (%rax),%eax
  58:   83 f8 0b                cmp    $0xb,%eax
  5b:   75 09                   jne    66 &lt;nio_write+0x66&gt;
  5d:   c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%rbp)
  64:   eb 07                   jmp    6d &lt;nio_write+0x6d&gt;
  66:   b8 ff ff ff ff          mov    $0xffffffff,%eax
  6b:   eb 15                   jmp    82 &lt;nio_write+0x82&gt;
  6d:   8b 45 fc                mov    -0x4(%rbp),%eax
  70:   29 45 f8                sub    %eax,-0x8(%rbp)
  73:   8b 45 fc                mov    -0x4(%rbp),%eax
  76:   01 45 f4                add    %eax,-0xc(%rbp)
  79:   83 7d f8 00             cmpl   $0x0,-0x8(%rbp)
  7d:   7f a2                   jg     21 &lt;nio_write+0x21&gt;
  7f:   8b 45 e8                mov    -0x18(%rbp),%eax
  82:   c9                      leaveq
  83:   c3                      retq
</code></pre><p></p><h2 id="4">&#x94FE;&#x63A5;</h2>
&#x2003;&#x2003;&#x7531;&#x6C47;&#x7F16;&#x7A0B;&#x5E8F;&#x751F;&#x6210;&#x7684;&#x76EE;&#x6807;&#x6587;&#x4EF6;&#x5E76;&#x4E0D;&#x80FD;&#x7ACB;&#x5373;&#x5C31;&#x88AB;&#x6267;&#x884C;&#xFF0C;&#x5176;&#x4E2D;&#x53EF;&#x80FD;&#x8FD8;&#x6709;&#x8BB8;&#x591A;&#x6CA1;&#x6709;&#x89E3;&#x51B3;&#x7684;&#x95EE;&#x9898;&#x3002;&#x4F8B;&#x5982;&#xFF0C;&#x67D0;&#x4E2A;&#x6E90;&#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x51FD;&#x6570;&#x53EF;&#x80FD;&#x5F15;&#x7528;&#x4E86;&#x53E6;&#x4E00;&#x4E2A;&#x6E90;&#x6587;&#x4EF6;&#x4E2D;&#x5B9A;&#x4E49;&#x7684;&#x67D0;&#x4E2A;&#x7B26;&#x53F7;&#xFF08;&#x5982;&#x53D8;&#x91CF;&#x6216;&#x8005;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x7B49;&#xFF09;&#xFF1B;&#x5728;&#x7A0B;&#x5E8F;&#x4E2D;&#x53EF;&#x80FD;&#x8C03;&#x7528;&#x4E86;&#x67D0;&#x4E2A;&#x5E93;&#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x51FD;&#x6570;&#xFF0C;&#x7B49;&#x7B49;&#x3002;&#x6240;&#x6709;&#x7684;&#x8FD9;&#x4E9B;&#x95EE;&#x9898;&#xFF0C;&#x90FD;&#x9700;&#x8981;&#x7ECF;&#x94FE;&#x63A5;&#x7A0B;&#x5E8F;&#x7684;&#x5904;&#x7406;&#x65B9;&#x80FD;&#x5F97;&#x4EE5;&#x89E3;&#x51B3;&#x3002;&#x94FE;&#x63A5;&#x7A0B;&#x5E8F;&#x7684;&#x4E3B;&#x8981;&#x5DE5;&#x4F5C;&#x5C31;&#x662F;&#x5C06;&#x6709;&#x5173;&#x7684;&#x76EE;&#x6807;&#x6587;&#x4EF6;&#x5F7C;&#x6B64;&#x76F8;&#x8FDE;&#x63A5;&#xFF0C;&#x4E5F;&#x5373;&#x5C06;&#x5728;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x4E2D;&#x5F15;&#x7528;&#x7684;&#x7B26;&#x53F7;&#x540C;&#x8BE5;&#x7B26;&#x53F7;&#x5728;&#x53E6;&#x5916;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x5B9A;&#x4E49;&#x8FDE;&#x63A5;&#x8D77;&#x6765;&#xFF0C;&#x4F7F;&#x5F97;&#x6240;&#x6709;&#x7684;&#x8FD9;&#x4E9B;&#x76EE;&#x6807;&#x6587;&#x4EF6;&#x6210;&#x4E3A;&#x4E00;&#x4E2A;&#x80FD;&#x591F;&#x88AB;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x88C5;&#x5165;&#x6267;&#x884C;&#x7684;&#x7EDF;&#x4E00;&#x6574;&#x4F53;&#x3002;&#x6839;&#x636E;&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#x6307;&#x5B9A;&#x7684;&#x540C;&#x5E93;&#x51FD;&#x6570;&#x7684;&#x94FE;&#x63A5;&#x65B9;&#x5F0F;&#x7684;&#x4E0D;&#x540C;&#xFF0C;&#x94FE;&#x63A5;&#x5904;&#x7406;&#x53EF;&#x5206;&#x4E3A;&#x4E24;&#x79CD;&#xFF1A;  <p></p>
<p>&#x2003;&#x2003; 1&#xFF09;&#x9759;&#x6001;&#x94FE;&#x63A5;  &#x5728;&#x8FD9;&#x79CD;&#x94FE;&#x63A5;&#x65B9;&#x5F0F;&#x4E0B;&#xFF0C;&#x51FD;&#x6570;&#x7684;&#x4EE3;&#x7801;&#x5C06;&#x4ECE;&#x5176;&#x6240;&#x5728;&#x5730;&#x9759;&#x6001;&#x94FE;&#x63A5;&#x5E93;&#x4E2D;&#x88AB;&#x62F7;&#x8D1D;&#x5230;&#x6700;&#x7EC8;&#x7684;&#x53EF;&#x6267;&#x884C;&#x7A0B;&#x5E8F;&#x4E2D;&#x3002;&#x8FD9;&#x6837;&#x8BE5;&#x7A0B;&#x5E8F;&#x5728;&#x88AB;&#x6267;&#x884C;&#x65F6;&#x8FD9;&#x4E9B;&#x4EE3;&#x7801;&#x5C06;&#x88AB;&#x88C5;&#x5165;&#x5230;&#x8BE5;&#x8FDB;&#x7A0B;&#x7684;&#x865A;&#x62DF;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#x4E2D;&#x3002;&#x9759;&#x6001;&#x94FE;&#x63A5;&#x5E93;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x4E00;&#x4E2A;&#x76EE;&#x6807;&#x6587;&#x4EF6;&#x7684;&#x96C6;&#x5408;&#xFF0C;&#x5176;&#x4E2D;&#x7684;&#x6BCF;&#x4E2A;&#x6587;&#x4EF6;&#x542B;&#x6709;&#x5E93;&#x4E2D;&#x7684;&#x4E00;&#x4E2A;&#x6216;&#x8005;&#x4E00;&#x7EC4;&#x76F8;&#x5173;&#x51FD;&#x6570;&#x7684;&#x4EE3;&#x7801;&#x3002;<br>&#x2003;&#x2003; 2&#xFF09;&#x52A8;&#x6001;&#x94FE;&#x63A5;  &#x5728;&#x6B64;&#x79CD;&#x65B9;&#x5F0F;&#x4E0B;&#xFF0C;&#x51FD;&#x6570;&#x7684;&#x4EE3;&#x7801;&#x88AB;&#x653E;&#x5230;&#x79F0;&#x4F5C;&#x662F;&#x52A8;&#x6001;&#x94FE;&#x63A5;&#x5E93;&#x6216;&#x5171;&#x4EAB;&#x5BF9;&#x8C61;&#x7684;&#x67D0;&#x4E2A;&#x76EE;&#x6807;&#x6587;&#x4EF6;&#x4E2D;&#x3002;&#x94FE;&#x63A5;&#x7A0B;&#x5E8F;&#x6B64;&#x65F6;&#x6240;&#x4F5C;&#x7684;&#x53EA;&#x662F;&#x5728;&#x6700;&#x7EC8;&#x7684;&#x53EF;&#x6267;&#x884C;&#x7A0B;&#x5E8F;&#x4E2D;&#x8BB0;&#x5F55;&#x4E0B;&#x5171;&#x4EAB;&#x5BF9;&#x8C61;&#x7684;&#x540D;&#x5B57;&#x4EE5;&#x53CA;&#x5176;&#x5B83;&#x5C11;&#x91CF;&#x7684;&#x767B;&#x8BB0;&#x4FE1;&#x606F;&#x3002;&#x5728;&#x6B64;&#x53EF;&#x6267;&#x884C;&#x6587;&#x4EF6;&#x88AB;&#x6267;&#x884C;&#x65F6;&#xFF0C;&#x52A8;&#x6001;&#x94FE;&#x63A5;&#x5E93;&#x7684;&#x5168;&#x90E8;&#x5185;&#x5BB9;&#x5C06;&#x88AB;&#x6620;&#x5C04;&#x5230;&#x8FD0;&#x884C;&#x65F6;&#x76F8;&#x5E94;&#x8FDB;&#x7A0B;&#x7684;&#x865A;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#x3002;&#x52A8;&#x6001;&#x94FE;&#x63A5;&#x7A0B;&#x5E8F;&#x5C06;&#x6839;&#x636E;&#x53EF;&#x6267;&#x884C;&#x7A0B;&#x5E8F;&#x4E2D;&#x8BB0;&#x5F55;&#x7684;&#x4FE1;&#x606F;&#x627E;&#x5230;&#x76F8;&#x5E94;&#x7684;&#x51FD;&#x6570;&#x4EE3;&#x7801;&#x3002;<br>&#x2003;&#x2003;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>gcc tcp_server.o -o tcp_server</code>&#x751F;&#x6210;&#x53EF;&#x6267;&#x884C;&#x7A0B;&#x5E8F;&#x3002;&#x53EF;&#x6267;&#x884C;&#x7A0B;&#x5E8F;&#x4E5F;&#x662F;&#x7B26;&#x5408;ELF&#x683C;&#x5F0F;&#x7684;&#x3002;</p>
<blockquote>
<p>&#x95EE;&#x9898;&#xFF1A;&#x7F16;&#x8BD1;&#x65F6;&#x6211;&#x4EEC;&#x4E3A;&#x4EC0;&#x4E48;&#x6709;&#x65F6;&#x5019;&#x9700;&#x8981;&#x6307;&#x5B9A;-fPIC&#x53C2;&#x6570;&#xFF1F;<br>&#x2003;&#x2003;&#x5982;&#x679C;&#x6211;&#x4EEC;&#x7F16;&#x8BD1;&#x4E00;&#x4E2A;&#x7B80;&#x5355;&#x7684;&#x7A0B;&#x5E8F;&#xFF0C;&#x76F4;&#x63A5;&#x547D;&#x4EE4;&#x884C;gcc -o xxx  ooo ttt&#x7B49;&#x65B9;&#x5F0F;&#x5C31;&#x80FD;&#x7F16;&#x8BD1;&#x4E86;&#xFF0C;&#x4F46;&#x662F;&#x5F80;&#x5F80;&#x4E00;&#x4E2A;&#x5927;&#x578B;&#x5DE5;&#x7A0B;&#x662F;&#x4E0D;&#x6B62;&#x4E00;&#x4E24;&#x4E2A;&#x6587;&#x4EF6;&#x7684;&#xFF0C;&#x7528;&#x547D;&#x4EE4;&#x884C;&#x7684;&#x65B9;&#x5F0F;&#x5C82;&#x4E0D;&#x662F;&#x8981;&#x8F93;&#x5165;&#x6240;&#x6709;&#x7684;&#x6E90;&#x7801;&#x6587;&#x4EF6;&#x5230;&#x547D;&#x4EE4;&#x884C;&#xFF0C;&#x90A3;&#x53C8;&#x5982;&#x4F55;&#x7F16;&#x8BD1;&#x6211;&#x4EEC;&#x7684;&#x5DE5;&#x7A0B;&#x5462;&#xFF1F;</p>
</blockquote>

                    
                    </section>
                
                
                </div>
            </div>
        </div>

        
        <a href="../chapter8/index.html" class="navigation navigation-prev " aria-label="Previous page: 项目编译"><i class="fa fa-angle-left"></i></a>
        
        
        <a href="../chapter8/8.2_makefile.html" class="navigation navigation-next " aria-label="Next page: makefile"><i class="fa fa-angle-right"></i></a>
        
    </div>
</div>

        
<script src="../gitbook/app.js"></script>

    
    <script src="../gitbook/plugins/gitbook-plugin-search/lunr.min.js"></script>
    

    
    <script src="../gitbook/plugins/gitbook-plugin-search/search.js"></script>
    

    
    <script src="../gitbook/plugins/gitbook-plugin-sharing/buttons.js"></script>
    

    
    <script src="../gitbook/plugins/gitbook-plugin-fontsettings/buttons.js"></script>
    

    
    <script src="../gitbook/plugins/gitbook-plugin-livereload/plugin.js"></script>
    

<script>
require(["gitbook"], function(gitbook) {
    var config = {"theme-default":{"showLevel":false},"highlight":{},"search":{"maxIndexSize":1000000},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"livereload":{}};
    gitbook.start(config);
});
</script>

        
    </body>
    
</html>
